/*============================================================================
* Author        : Li Ji
* Mail          : leejearl@126.com
* Last modified : 2015-02-08 17:52
* Filename      : CConfig.hpp
* Description   :
*
=============================================================================*/


#ifndef CCONFIG_H
#define CCONFIG_H

#include <string>
#include <vector>

class CConfig
{
    // variables
    private:
        std::string _cfg;
    protected:
        long int _nDim;

        long int _nMarker;
        std::vector<std::string> _markerTags;
        std::vector< long int > _markerNElem;
        std::vector< long int > _markerTypes;
        long int _solver;


        std::string _meshFile;
        std::string _outMeshFile;


    public:


    // methods
    private:
    protected:
        void addOption(const std::string name, long int & option_field, long int default_value);
    public:
        CConfig(std::string aCfg);
        void init();
        long int getNDim();
        long int getKindSolver();
        std::string getMeshFile();
        std::string getOutMeshFile();

        void setNMarker(long int val);
        long int getNMarker();

        void setMarkerNElem(long int aMarker, long int val);
        long int getMarkerNElem(long int aMarker);

        void setMarkerTag(long int aMarker, std::string aMarkerTag);
        std::string getMarkerTag(long int aMarker);
        long int getMarkerType(long int aMarker);
};



#include "CConfig.inl"

#endif //:~ CCONFIG_H

///:~
